package com.cy.api.collection;

import java.util.LinkedHashMap;
import java.util.Map;

//当本地缓存中的mybatis二级缓存满了时，就会去执行清除策略
//1.二级缓存的缓存清除策略--fifo（先进先出原理), 底层实现原理就是map
LinkedHashMap底层是链表结构，它会记录fifo的添加顺序

//2.二级缓存的缓存清除策略--lru(清除最少的访问)，底层实现原理是map
LinkedHashMap是链表，它会记录lru的访问顺序

public class LinkedHashMapTests {
public static void main(String[] args) {
        //假设为cache
        LinkedHashMap<String,Integer> map=
                new LinkedHashMap(3,0.75f,true){//LRU
                //new LinkedHashMap(3){   //fifo
                /**每次执行put操作都会调用此方法*/
                @Override
                protected boolean removeEldestEntry(Map.Entry eldest) {
                   return size()>3;       //设置map容量是3
                }
        };
        map.put("A", 100);
        map.put("B", 200);
        map.put("C", 300);
        map.get("A");     //把A拿出来访问，这时lru算法就会清除B,C ,留下A,D,E了
        map.put("D", 400);
        map.put("E", 500);
        System.out.println(map);
    }
}

结果是---{A=100，D=300，E=500}